package com.bjfu.service.impl;

import com.bjfu.dto.MemberRequestDTO;
import com.bjfu.dto.QuestionDTO;
import com.bjfu.mapper.QuestionMapper;
import com.bjfu.mapper.UserMapper;
import com.bjfu.mapper.UserInfoMapper;
import com.bjfu.model.Question;
import com.bjfu.model.User;
import com.bjfu.model.UserInfo;
import com.bjfu.service.UserService;
import com.bjfu.utils.Result;
import com.bjfu.utils.ResultCodeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.StreamSupport;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private QuestionMapper questionMapper;
    @Autowired
    private UserMapper userMapper;
    @Override
    public Result getQuestions(Long userId) {
        // 调用 questionMapper 获取指定 userId 的所有提问信息
        List<Question> questions = questionMapper.getQuestionsByUserId(userId);

        // 如果查询结果为空，说明该用户没有提问
        if (questions != null && !questions.isEmpty()) {
            // 返回该用户的提问信息
            return Result.ok(questions);
        } else {
            // 如果没有找到问题，返回“未找到提问”错误信息
            return Result.build(null, ResultCodeEnum.QUESTION_NOT_FOUND);
        }
    }

    @Override
    public Result getQuestionsByStatus(Long userId, Integer status) {
        // 调用 questionMapper 获取指定 userId 和 status 的所有提问信息
        List<Question> questions = questionMapper.getQuestionsByUserIdAndStatus(userId, status);

        // 如果查询结果为空，说明没有找到符合条件的提问
        if (questions != null && !questions.isEmpty()) {
            // 返回符合条件的提问信息
            return Result.ok(questions);
        } else {
            // 如果没有找到符合条件的问题，返回“未找到提问”错误信息
            return Result.build(null, ResultCodeEnum.QUESTION_NOT_FOUND);
        }
    }


    @Override
    public Result getReply(Long questionId) {
        // 调用 questionMapper 获取指定 questionId 的问题
        Question question = questionMapper.getQuestionById(questionId);

        // 如果查询结果为空，说明没有找到该问题
        if (question != null) {
            // 获取问题的回复内容
            String replyContent = question.getReplyContent();

            // 如果回复内容不为空，则返回
            if (replyContent != null && !replyContent.isEmpty()) {
                return Result.ok(replyContent);
            } else {
                // 如果没有回复内容，返回没有回复的结果
                return Result.build(null, ResultCodeEnum.NO_REPLY_FOUND);
            }
        } else {
            // 如果没有找到问题，返回问题未找到的结果
            return Result.build(null, ResultCodeEnum.QUESTION_NOT_FOUND);
        }
    }

    @Override
    public Result submitQuestion(QuestionDTO questionDTO) {
        Question question=new Question();
        question.setTitle(questionDTO.getTitle());
        question.setContent(questionDTO.getContent());
        question.setUserId(questionDTO.getUser_id());
        question.setUsername(userMapper.getUsernameById(questionDTO.getUser_id()));//根据用户id获取用户名
        question.setQuestionTime(LocalDateTime.now());//提问时间设置为当前时间
        question.setStatus(0);//将status设置为0，表示问题还未处理
        System.out.println(question);
        int result=questionMapper.insertQuestion(question);
        if(result>0){
            return Result.ok(question);//没有返回question_id
        }
        else{
            return Result.build(null,ResultCodeEnum.INSERT_FAILED);//提问失败
        }
    }


}
